Skip to content

feat(#466): Resource 增加 LastDiscoverStatus 字段,实现扫描状态追踪#484

Merged
kenlee1988 merged 3 commits into
mainfrom
feature/466-issue
May 21, 2026
Merged

feat(#466): Resource 增加 LastDiscoverStatus 字段,实现扫描状态追踪#484
kenlee1988 merged 3 commits into
mainfrom
feature/466-issue

Conversation

@kenlee1988

@kenlee1988 kenlee1988 commented May 20, 2026

Copy link
Copy Markdown
Contributor

Pull Request

What Changed

  • Resource 实体新增 LastDiscoverStatus 字段,记录最近一次扫描的差异状态(新增 / 更新 / 恢复 / 缺失 / 未变更)
  • DB schema 迁移:新增 f_last_discover_status 列(dm8 + mariadb 均覆盖)
  • 扩展 Resource interface / access / service / mock 以读写新字段
  • 拆分 discover_handler.go(-668 行)为 discover_table.go / discover_index.go / discover_fileset.go / discover_status.go 四个文件,在各扫描流程中接入状态标记
  • 合并 UpdateUpdateWithDiscoverStatus 为单一 Update 方法,根据资源字段自动决定是否更新发现状态
  • 补充 resource_service_test.go / discover_handler_test.go 单元测试

Why


How

  • 关键实现:
    • discover_status.go 集中定义状态枚举与 discoverStatusAfterEnrich 计算逻辑
    • 扫描入口在持久化资源时根据计算结果设置 LastDiscoverStatusUpdate 内部根据字段是否非空判定是否一并更新状态列
    • 按 table / index / fileset 三类分文件实现各自的扫描处理器,原 discover_handler.go 删除
  • Breaking changes:
    • DB schema 变更:新增 f_last_discover_status 列(默认 NULL,向后兼容)
    • access 层 Update 接口签名收敛:UpdateWithDiscoverStatus 已合并入 Update,外部调用方需切换

Testing

  • Unit tests passed locally(resource_service_test.godiscover_handler_test.go
  • Integration tests passed locally
  • Verified in test environment

Test notes:单测覆盖 Update 在含/不含 discover status 字段两种调用形态下的行为,以及五种状态枚举的标记路径。


Risk & Rollback

  • 潜在风险:
    • DB 迁移失败将阻塞升级(脚本为新增列,理论上幂等)
    • 拆分 discover_handler.go 涉及范围较大,若有未迁移到的调用点会编译失败
    • Update 合并后,如果调用方原本依赖"不更新 discover status"的旧 Update 行为,需要核对字段是否被意外携带
  • 回滚方案:
    • 代码:revert commits ff7de8b3a4cb3a81
    • DB:ALTER TABLE ... DROP COLUMN f_last_discover_status(脚本均为加列,回滚安全)

Additional Notes

  • 设计文档:adp/vega/vega-backend/docs/pr-a-resource-last-discover-status-plan.md
  • 包含 commits:
    • ff7de8b3 feat(vega-backend): 实现资源扫描状态追踪能力
    • a4cb3a81 refactor(resource): simplify discover status update logic

“Ken.li” added 2 commits May 20, 2026 17:31
为资源实体新增LastDiscoverStatus字段,支持记录每次扫描的资源状态差异,包括新增/更新/恢复/缺失/未变更五种状态,完善扫描结果统计和数据溯源能力。

主要改动:
1. 新增数据库迁移脚本,添加f_last_discover_status字段
2. 扩展Resource结构体和相关接口,新增扫描状态枚举和更新方法
3. 实现扫描处理器的状态标记逻辑,在table/index/fileset扫描流程中接入状态追踪
4. 补充单元测试覆盖核心场景
5. 调整存储层实现支持新字段的读写
1. 移除冗余的setDiscoverStatusAfterEnrich辅助函数,直接内联调用discoverStatusAfterEnrich
2. 合并Update和UpdateWithDiscoverStatus接口为单个Update方法,自动根据资源字段决定是否更新发现状态
3. 更新所有调用处和测试用例适配新的接口逻辑
4. 调整单元测试验证资源发现状态正确保留
@kenlee1988 kenlee1988 changed the title Feature/466 issue feat(#466): Resource 增加 LastDiscoverStatus 字段,实现扫描状态追踪 May 20, 2026
@kenlee1988 kenlee1988 self-assigned this May 20, 2026
1.  重构包结构与依赖注入,将驱动适配器统一封装到logics层全局变量
2.  移除冗余的worker单例实现,合并任务处理逻辑
3.  添加DEBUG_MODE环境变量支持,调试模式下使用本地队列处理发现任务
4.  修复包名错误,统一代码风格与接口调用方式
5.  简化Asynq客户端/服务端创建逻辑,移除不必要的context参数
@kenlee1988 kenlee1988 merged commit 9195c33 into main May 21, 2026
2 checks passed
@kenlee1988 kenlee1988 deleted the feature/466-issue branch May 21, 2026 09:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

【VEGA】catalog 扫描后,resource 上缺少扫描状态字段,类似以新增,变更之类的状态

2 participants